﻿Imports EVOLTA.Promocion.Bl.Bc
Imports EVOLTA.Promocion.Bl.Be
Imports System.IO

Partial Class Atencion_al_Cliente_AtencionCliente
    Inherits System.Web.UI.Page
    Dim Evolta As Eevolta '= Nothing
    Private atencionClientes As List(Of Ecliente) = Nothing
    Private loadDcmtos As List(Of EcargarDocumentos) = Nothing
    Private jsMensaje As String = Nothing
    Private ruta As String = Server.MapPath("~/") + "reportes/scanDocumentosCliente"

#Region "       Formulario                  "
    Public Property sCliente() As List(Of Ecliente)
        Get
            If Session("atencionClientes") Is Nothing Then
                Return Nothing
            Else
                Return Session("atencionClientes")
            End If
        End Get
        Set(ByVal value As List(Of Ecliente))
            Session("atencionClientes") = value
        End Set
    End Property
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Response.CacheControl = "no-cache"
        Response.AddHeader("Pragma", "no-cache")
        Response.Expires = -1
        '***********************************************************'
        Dim str As New StringBuilder
        str.Append("function mostrarPopup(pop){")
        str.Append("    incializarPantallaPago();")
        str.Append("    LimpiaPopup();")
        str.Append("    $find(pop).show();")
        str.Append("    return true;")
        str.Append("    }")
        str.Append("function ocultarPopup(pop){")
        str.Append("    showDivResultadoSeleccio();")
        str.Append("    $find(pop).hide();")
        str.Append("    return true;")
        str.Append("    }")

        ClientScript.RegisterClientScriptBlock(Me.GetType(), "mostrar", str.ToString, True)

        btnCargarDcmtos.Attributes.Add("onclick", "mostrarPopup('" + mpLoadDcmtos.ClientID + "'); return false;")
        btnCancelar.Attributes.Add("onclick", "ocultarPopup('" + mpLoadDcmtos.ClientID + "'); return false;")
        '***********************************************************'
        If Not IsPostBack Then
            cargarVendedor()
            'txtUsuario.Text = Me.Master.descUsuario.Trim
            Evolta = CType(Session("sEVOLTA"), Eevolta)
            Me.txtUsuario.Text = Evolta.descUsuario.Trim
            txtFecha.Text = Format(Now, "dd/MM/yyyy")
        Else
            If hdNroDcmto.Value.Trim.Length > 0 Then
                cargarDocumento(hdNroDcmto.Value.Trim, hdfCodigoSeparacion.Value.Trim)
            End If
        End If
    End Sub
    Private Sub cargarVendedor()
        selVendedor.DataSource = Rvendedor.SeleccionarXEstado(Me.Master.descEmpresa, True)
        selVendedor.DataTextField = "NombresCompletos"
        selVendedor.DataValueField = "idVendedor"
        selVendedor.DataBind()
        upVendedor.Update()
    End Sub
    Protected Sub btnBuscar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnBuscar.Click
        Dim pVendedor As New Evendedor With _
        { _
         .idProyecto = Me.Master.idProyecto, _
         .idEtapa = Me.Master.idEtapa, _
         .idVendedor = selVendedor.Value _
         }
        atencionClientes = Rcliente.SeleccionarFiltroAtencionClientexNombreApePaternoApeMaterno _
                           (Me.Master.descEmpresa, False, txtBuscarCliente.Value, pVendedor)
        Me.sCliente = Nothing
        Me.sCliente = atencionClientes
        If Not atencionClientes Is Nothing Then
            gvwCliente.DataSource = atencionClientes
            gvwCliente.DataBind()
            upVistaCliente.Update()
        End If
    End Sub
    Protected Sub gvwCliente_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) _
    Handles gvwCliente.RowCommand
        Select Case e.CommandName
            Case "Select"
                lblDinamico.Text = "Datos del Cliente"
                atencionClientes = Session("atencionClientes")
                Dim LCliente As Generic.IEnumerable(Of Ecliente) = Nothing
                LCliente = From c In atencionClientes _
                           Where c.idCliente = e.CommandArgument _
                           Select c

                Dim idCliente As Int32 = LCliente.ElementAt(0).idCliente
                hdfIdCliente.Value = idCliente
                hfIdTpoCliente.Value = 2
                lblTpoDcmto.Text = LCliente.ElementAt(0).EtpoDcmto.descTpoDcmto
                lblNroDcmto.Text = LCliente.ElementAt(0).nroDocumento
                lblNombres.Text = LCliente.ElementAt(0).NombresCompletos
                lblDireccion.Text = LCliente.ElementAt(0).direccion
                lblTelefono.Text = LCliente.ElementAt(0).telefonoFijo
                lblEmail.Text = LCliente.ElementAt(0).email
                lblDepartamento.Text = LCliente.ElementAt(0).Eubigeo.descDepartamento
                lblProvincia.Text = LCliente.ElementAt(0).Eubigeo.descProvincia
                lblDistrito.Text = LCliente.ElementAt(0).Eubigeo.descDistrito
                lblRazonSocial.Text = LCliente.ElementAt(0).razonSocial
                lblTelefonoLaboral.Text = LCliente.ElementAt(0).telefonoLaboral
                lblCelular.Text = LCliente.ElementAt(0).telefonoCelular
                lblPuesto.Text = LCliente.ElementAt(0).puesto
                hdNroDcmto.Value = LCliente.ElementAt(0).nroDocumento.Trim
                hdfCodigoSeparacion.Value = LCliente.ElementAt(0).codigoSeparacion.Trim
                upNroDcmtoCliente.Update()
                cargarDocumento(hdNroDcmto.Value.Trim, hdfCodigoSeparacion.Value)
        End Select
    End Sub
    Protected Sub gvwCliente_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) _
    Handles gvwCliente.RowDataBound
        If e.Row.RowType = DataControlRowType.DataRow Then
            e.Row.Attributes.Add("OnMouseOver", "Resaltar_On(this);")
            e.Row.Attributes.Add("OnMouseOut", "Resaltar_Off(this);")
            e.Row.Attributes("OnClick") = Page.ClientScript.GetPostBackClientHyperlink(Me.gvwCliente, "Select$" + e.Row.RowIndex.ToString)
            e.Row.Style.Add("cursor", "hand")
        End If
    End Sub
    Protected Sub gvwLista_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles gvwLista.RowCommand
        Select Case e.CommandName
            Case "Delete"
                Dim var() As String = Split(e.CommandArgument, ":")
                Dim dmcto As New EcargarDocumentos _
                With { _
                    .idDcmto = var(0).ToString, _
                    .nroDocumento = lblNroDcmto.Text, _
                    .idUsuario = Me.Master.idUsuario, _
                    .nombreDocumento = txtnombreDocumento.Text, _
                    .fecha = txtFecha.Text, _
                    .rutaDcmto = var(1).ToString, _
                    .codigoSeparacion = hdfCodigoSeparacion.Value _
                }
                RcargarDocumentos.Eliminar(Me.Master.descEmpresa, dmcto)
                File.Delete(ruta + "\" + var(1).ToString)
                'cargarDocumento(hdNroDcmto.Value.Trim)
                'cargarDocumento(dmcto.nroDocumento.Trim)
        End Select
    End Sub
   
#End Region

#Region "       Pagos                       "
    Private Sub cargarDocumento(ByVal nroDcmto As String, ByVal codigoSeparacion As String)
        'Dim loadDcmto As New EcargarDocumentos With {.nroDocumento = nroDcmto}

        Dim loadDcmto As New EcargarDocumentos _
        With { _
               .nroDocumento = nroDcmto, _
               .codigoSeparacion = codigoSeparacion _
             }
        'deleteDcmtos = RcargarDocumentos.Eliminar(Me.Master.descEmpresa, nroDcmto)
        loadDcmtos = RcargarDocumentos.SeleccionarTodo(Me.Master.descEmpresa, False, loadDcmto)
        Session("loadDcmtos") = loadDcmtos

        If Not loadDcmtos Is Nothing Then
            gvwLista.DataSource = loadDcmtos
            gvwLista.DataBind()
            upLista.Update()
        End If
    End Sub
    Protected Sub btnGuardar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnGuardar.Click
        If fupFilesEscaner.PostedFile.FileName.Length > 0 Then
            If Not verificarLoad() Then
                Exit Sub
            End If
        End If
        Dim dmcto As New EcargarDocumentos _
            With { _
                .nroDocumento = lblNroDcmto.Text, _
                .rutaDcmto = IIf(fupFilesEscaner.PostedFile.FileName.Length > 0, generarNombre() + "@" + Path.GetFileName(fupFilesEscaner.PostedFile.FileName.Trim), hdFileOldScanner.Value), _
                .idUsuario = Me.Master.idUsuario, _
                .NombreCompleto = txtUsuario.Text, _
                .nombreDocumento = txtnombreDocumento.Text, _
                .fecha = txtFecha.Text, _
                .codigoSeparacion = hdfCodigoSeparacion.Value.ToString _
            }
        If RcargarDocumentos.Añadir(Me.Master.descEmpresa, dmcto) Then
            cargarDocumento(hdNroDcmto.Value.Trim, hdfCodigoSeparacion.Value.Trim)
            upLista.Update()
            jsMensaje = "<script>javascript:showDivResultadoSeleccio();alert(' Se registro correctamente.');</script>)"
            Controls.Add(New LiteralControl(jsMensaje))
        Else
            jsMensaje = "<script>javascript:alert(' No se pudo registrar.');</script>)"
            Controls.Add(New LiteralControl(jsMensaje))
        End If
        mpLoadDcmtos.Hide()
    End Sub
    Private Function verificarLoad() As Boolean
        Dim strNomArchivo As String = fupFilesEscaner.PostedFile.FileName
        Dim strExtension As String = strNomArchivo.Substring(strNomArchivo.LastIndexOf(".") + 1).ToLower.Trim

        If strNomArchivo.Trim.Length > 100 Then
            jsMensaje = "<script>javascript:alert(' El nombre del archivo no puede ser más de 100 caracteres.');</script>)"
            Controls.Add(New LiteralControl(jsMensaje))
            Return False
        End If
        If fupFilesEscaner.PostedFile Is Nothing Then
            jsMensaje = "<script>javascript:alert(' Debe seleccionar un archivo.');</script>)"
            Controls.Add(New LiteralControl(jsMensaje))
            Return False
        End If
        If fupFilesEscaner.PostedFile.ContentLength = 0 Then
            jsMensaje = "<script>javascript:alert(' No puede subir un archivo con peso cero(0).');</script>)"
            Controls.Add(New LiteralControl(jsMensaje))
            Return False
        End If
        If fupFilesEscaner.PostedFile.ContentLength >= 1048576 Then
            jsMensaje = "<script>javascript:alert(' No puede subir un archivo mayor a 1 Mb.');</script>)"
            Controls.Add(New LiteralControl(jsMensaje))
            Return False
        End If
        If Not (strExtension.Equals("jpg") OrElse strExtension.Equals("pdf") OrElse strExtension.Equals("doc")) Then
            jsMensaje = "<script>javascript:alert(' Solo puede subir archivos con extensión .jpg (JPG)| .pdf (PDF)| .doc (DOC).');</script>)"
            Controls.Add(New LiteralControl(jsMensaje))
            Return False
        End If
        Try
            Try
                If hdFileOldScanner.Value <> (generarNombre() + "@" + Path.GetFileName(strNomArchivo)) Then
                    If File.Exists(ruta + "\" + hdFileOldScanner.Value) Then
                        File.Move(ruta + "\" + hdFileOldScanner.Value, ruta + "\old\" + hdFileOldScanner.Value)
                    End If
                End If
                fupFilesEscaner.PostedFile.SaveAs(ruta + "\" + generarNombre() + "@" + Path.GetFileName(strNomArchivo))
                Return True
            Catch ex As Exception
                jsMensaje = "<script>javascript:alert(' No se pudo completar el proceso; intentelo nuevamente.');</script>)"
                Controls.Add(New LiteralControl(jsMensaje))
            End Try
        Catch ex As Exception
            jsMensaje = "<script>javascript:alert(' Sólo se permiten subir archivos de máximo 1 Mb.');</script>)"
            Controls.Add(New LiteralControl(jsMensaje))
            Return False
        End Try
    End Function
    Private Function generarNombre() As String
        Return Me.Master.descEmpresa.Trim + Me.Master.idProyecto.ToString + Me.Master.idEtapa.ToString + "Cliente" + lblNroDcmto.Text.Trim
    End Function
    Protected Function estadoDownload(ByVal dato As String) As Boolean
        If dato.Trim.Length > 0 Then
            Return True
        Else
            Return False
        End If
    End Function
    Protected Function rutaScanner(ByVal idMotivo As String, ByVal archivo As String) As String
        Return String.Format("~/reportes/cargarDocumentosDownload.aspx?filename={0}", archivo)
    End Function
#End Region

End Class